Don't reference the widgets in the resulting list. (#11821) This makes
authorOwen Taylor <otaylor@redhat.com>
Mon, 26 Mar 2001 20:54:17 +0000 (20:54 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 26 Mar 2001 20:54:17 +0000 (20:54 +0000)
Mon Mar 26 15:48:45 2001  Owen Taylor  <otaylor@redhat.com>

* gtk/gtkwindow.c (gtk_window_list_toplevels): Don't
reference the widgets in the resulting list. (#11821)
This makes this consistent with gtk_container_children.

* gtk/gtkwindow.c gtk/gtkwidget.c: Fix up the two
uses of gtk_window_list_toplevels.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkwidget.c
gtk/gtkwindow.c

index 15dc1b84139624738e57c213af307f4f082dce8c..22114f22cf12f33638546d0ea328de072246812f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Mon Mar 26 15:48:45 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_list_toplevels): Don't
+       reference the widgets in the resulting list. (#11821)
+       This makes this consistent with gtk_container_children.
+
+       * gtk/gtkwindow.c gtk/gtkwidget.c: Fix up the two
+       uses of gtk_window_list_toplevels.
+
 Mon Mar 26 15:26:17 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkimcontext.c (gtk_im_context_set_use_preedit): Add
index 15dc1b84139624738e57c213af307f4f082dce8c..22114f22cf12f33638546d0ea328de072246812f 100644 (file)
@@ -1,3 +1,12 @@
+Mon Mar 26 15:48:45 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_list_toplevels): Don't
+       reference the widgets in the resulting list. (#11821)
+       This makes this consistent with gtk_container_children.
+
+       * gtk/gtkwindow.c gtk/gtkwidget.c: Fix up the two
+       uses of gtk_window_list_toplevels.
+
 Mon Mar 26 15:26:17 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkimcontext.c (gtk_im_context_set_use_preedit): Add
index 15dc1b84139624738e57c213af307f4f082dce8c..22114f22cf12f33638546d0ea328de072246812f 100644 (file)
@@ -1,3 +1,12 @@
+Mon Mar 26 15:48:45 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_list_toplevels): Don't
+       reference the widgets in the resulting list. (#11821)
+       This makes this consistent with gtk_container_children.
+
+       * gtk/gtkwindow.c gtk/gtkwidget.c: Fix up the two
+       uses of gtk_window_list_toplevels.
+
 Mon Mar 26 15:26:17 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkimcontext.c (gtk_im_context_set_use_preedit): Add
index 15dc1b84139624738e57c213af307f4f082dce8c..22114f22cf12f33638546d0ea328de072246812f 100644 (file)
@@ -1,3 +1,12 @@
+Mon Mar 26 15:48:45 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_list_toplevels): Don't
+       reference the widgets in the resulting list. (#11821)
+       This makes this consistent with gtk_container_children.
+
+       * gtk/gtkwindow.c gtk/gtkwidget.c: Fix up the two
+       uses of gtk_window_list_toplevels.
+
 Mon Mar 26 15:26:17 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkimcontext.c (gtk_im_context_set_use_preedit): Add
index 15dc1b84139624738e57c213af307f4f082dce8c..22114f22cf12f33638546d0ea328de072246812f 100644 (file)
@@ -1,3 +1,12 @@
+Mon Mar 26 15:48:45 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_list_toplevels): Don't
+       reference the widgets in the resulting list. (#11821)
+       This makes this consistent with gtk_container_children.
+
+       * gtk/gtkwindow.c gtk/gtkwidget.c: Fix up the two
+       uses of gtk_window_list_toplevels.
+
 Mon Mar 26 15:26:17 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkimcontext.c (gtk_im_context_set_use_preedit): Add
index 15dc1b84139624738e57c213af307f4f082dce8c..22114f22cf12f33638546d0ea328de072246812f 100644 (file)
@@ -1,3 +1,12 @@
+Mon Mar 26 15:48:45 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_list_toplevels): Don't
+       reference the widgets in the resulting list. (#11821)
+       This makes this consistent with gtk_container_children.
+
+       * gtk/gtkwindow.c gtk/gtkwidget.c: Fix up the two
+       uses of gtk_window_list_toplevels.
+
 Mon Mar 26 15:26:17 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkimcontext.c (gtk_im_context_set_use_preedit): Add
index 15dc1b84139624738e57c213af307f4f082dce8c..22114f22cf12f33638546d0ea328de072246812f 100644 (file)
@@ -1,3 +1,12 @@
+Mon Mar 26 15:48:45 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_list_toplevels): Don't
+       reference the widgets in the resulting list. (#11821)
+       This makes this consistent with gtk_container_children.
+
+       * gtk/gtkwindow.c gtk/gtkwidget.c: Fix up the two
+       uses of gtk_window_list_toplevels.
+
 Mon Mar 26 15:26:17 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkimcontext.c (gtk_im_context_set_use_preedit): Add
index 52cf619ad84ed5eb1101b11d15f68b24291d34b0..7b95943ec75b08d95de69af4ae04a2fb8bb4c2ab 100644 (file)
@@ -4630,6 +4630,8 @@ gtk_widget_set_default_direction (GtkTextDirection dir)
       gtk_default_direction = dir;
 
       tmp_list = toplevels = gtk_window_list_toplevels ();
+      g_list_foreach (toplevels, (GFunc)g_object_ref, NULL);
+      
       while (tmp_list)
        {
          gtk_widget_set_default_direction_recurse (tmp_list->data,
@@ -4639,7 +4641,6 @@ gtk_widget_set_default_direction (GtkTextDirection dir)
        }
 
       g_list_free (toplevels);
-      
     }
 }
 
index a61ca77414a73996ef28d581f822942b8ffaf596..58448226de360be5aadf05156e541df30066392f 100644 (file)
@@ -1020,11 +1020,14 @@ gtk_window_set_modal (GtkWindow *window,
 /**
  * gtk_window_list_toplevels:
  * 
- * Returns a list of all existing toplevel windows. Each widget
- * in the list has a reference added to it; to free the
- * list, first unref each widget in the list, then free the list.
+ * Returns a list of all existing toplevel windows. The widgets
+ * in the list are not individually referenced. If you want
+ * to iterate through the list and perform actions involving
+ * callbacks that might destroy the widgets, you MUST call
+ * g_list_foreach (result, (GFunc)g_object_ref, NULL) first, and
+ * then unref all the widgets afterwards.
  * 
- * Return value: list of referenced toplevel widgets
+ * Return value: list of toplevel widgets
  **/
 GList*
 gtk_window_list_toplevels (void)
@@ -1033,7 +1036,7 @@ gtk_window_list_toplevels (void)
   GSList *slist;
 
   for (slist = toplevel_list; slist; slist = slist->next)
-    list = g_list_prepend (list, gtk_widget_ref (slist->data));
+    list = g_list_prepend (list, slist->data);
 
   return list;
 }
@@ -2286,6 +2289,7 @@ gtk_window_read_rcfiles (GtkWidget *widget,
       _gtk_icon_set_invalidate_caches ();
       
       toplevels = gtk_window_list_toplevels ();
+      g_list_foreach (toplevels, (GFunc)g_object_ref, NULL);
       
       for (list = toplevels; list; list = list->next)
        {